import { createStore } from 'vuex'
import { reactive } from 'vue'
import { defineStore } from 'pinia'

export default createStore({
  state: {
  },
  getters: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

export const useAccountStore = defineStore('accountStore', () => {
  const account = reactive({
    id: null,
    pwd: null,
    email: null,
    tpe: null,
    name: null,
    avatar: null,
    netid: null,
    credit: null,
    note: null,
    fans: null,
    like: null,
    province: null,
    city: null,
    school: null,
    academy: null,
  });

  const setAccount = (accountData) => {
    account.id = accountData.id
    account.pwd = accountData.pwd
    account.email = accountData.email
    account.tpe = accountData.tpe
    account.name = accountData.name
    account.avatar = accountData.avatar
    account.netid = accountData.netid
    account.credit = accountData.credit
    account.note = accountData.note
    account.fans = accountData.fans
    account.like = accountData.like
    account.province = accountData.province
    account.city = accountData.city
    account.school = accountData.school
    account.academy = accountData.academy
  };

  const clearAccount = () => {
    account.id = null
    account.pwd = null
    account.email = null
    account.tpe = null
    account.name = null
    account.avatar = null
    account.netid = null
    account.credit = null
    account.note = null
    account.fans = null
    account.like = null
    account.province = null
    account.city = null
    account.school = null
    account.academy = null
  }

  return { account, setAccount, clearAccount };
});

export const useAuthStore = defineStore('auth', {
  state: () => ({
    accessToken: '',
  }),
  actions: {
    setToken ({ accessToken }) {
      this.accessToken = accessToken;
      localStorage.setItem('accessToken', accessToken);
    },
    clearToken () {
      this.accessToken = '';
      localStorage.removeItem('accessToken');
    }
  }
});
